package com.xmtlxx.web.controller.oms.service;

import com.xmtlxx.common.core.domain.PageQuery;
import com.xmtlxx.common.core.page.TableDataInfo;
import com.xmtlxx.oms.domain.Staging;
import com.xmtlxx.oms.domain.bo.StagingBo;
import com.xmtlxx.oms.domain.vo.StagingInfoVo;
import com.xmtlxx.oms.domain.vo.StagingVo;
import com.xmtlxx.wms.domain.vo.InventoryVo;

import java.util.Collection;
import java.util.List;

/**
 * 暂存登记Service接口
 *
 * @author xmtlxx
 * @date 2022-11-20
 */
public interface IStagingService {

    /**
     * 查询暂存登记
     *
     * @param id 暂存登记主键
     * @return 暂存登记
     */
    StagingVo queryById(String id);

    StagingVo getStagingInfoByPno(String pno);

    /**
     * 查询暂存登记列表
     *
     * @param bo 暂存登记
     * @return 暂存登记集合
     */
    TableDataInfo<StagingVo> queryPageList(StagingBo bo, PageQuery pageQuery);

    TableDataInfo<StagingInfoVo> getStagingPageList(StagingBo bo, PageQuery pageQuery);

    /**
     * 查询暂存登记列表
     *
     * @param bo 暂存登记
     * @return 暂存登记集合
     */
    List<StagingVo> queryList(StagingBo bo);

    /**
     * 修改暂存登记
     *
     * @param bo 暂存登记
     * @return 结果
     */
    Boolean insertByBo(StagingBo bo);

    Boolean inserStagingByBo(StagingBo bo);

    Boolean insertApiByBo(StagingBo bo);

    /**
     * 修改暂存登记
     *
     * @param bo 暂存登记
     * @return 结果
     */
    Boolean updateByBo(StagingBo bo);

    Boolean updateStagingByBo(StagingBo bo);

    /**
     * 校验并批量删除暂存登记信息
     *
     * @param ids 需要删除的暂存登记主键集合
     * @param isValid 是否校验,true-删除前校验,false-不校验
     * @return 结果
     */
    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);

    Boolean deleteVoById(String id);

    List<StagingVo> getStaingByNo(String pno);

    StagingVo getVoByNo(String pno);

    List<Staging> listStaging(StagingBo bo);

    /**
     * 查询已登记非中心财物
     * @author hergreen
     * @date 2024/12/26 16:51
     * @param proNo 财物编号
     * @param pageQuery 分页
     * @return com.xmtlxx.common.core.page.TableDataInfo<com.xmtlxx.wms.domain.vo.StagingVo>
     */
    TableDataInfo<StagingVo> getNotCanterProList(String proNo, PageQuery pageQuery);

    /**
     *
     * @param bo
     * @param pageQuery
     * @return
     */
    TableDataInfo<StagingInfoVo> getXzProList(StagingBo bo, PageQuery pageQuery);

    /**
     * 获取行政类涉案财物物品编码
     * @return
     */
    String getXzPno();

    /**
     * 获取行政类财物详情
     * @param pno
     * @return
     */
    StagingVo getXzProByPno(String pno);
}
